
Wt 3.3.1文档翻译:Wt::Http::Client类参考,Wt::Http::Client Class Reference
公有成员函数 |
|
|
void |
setTimeout (int seconds) |
|
设置输入/输出的超时时间。详细说明…… |
|
|
void |
setMaximumResponseSize (std::size_t bytes) |
|
设置最大的回复尺寸。详细说明…… |
|
|
bool |
get (const std::string &url) |
|
启动一个GET请求。详细说明…… |
|
|
done () |
|
|
当前请求完成之后会发射这个信号。详细说明…… |
|
一个HTTP客户端。
这个类实现了一个HTTP客户端。它可用来使用HTTP 协议与网页服务交互。
这个客户端类使用了异步输入/输出,并且只提供异步接口:妳无法主动等待操作完成,当操作完成时客户端对象会使用done()信号来通知妳获取结果。
因为这个客户端类使用的是异步输入/输出,所以,它会使用一个事件驱动的线程池来完成它的工作。默认情况下,这个线程池就是Wt 服务器所使用的同一个线程池,该线程池可使用WServer::ioService()获取,但是,妳也可以显式地为客户端对象提供一个输入/输出服务对象。
这个客户端对象支持HTTP和HTTPS (如果Wt在编译时启用了OpenSSL支持的话)协议,并且可用于做GET 和POST 操作。一个客户端在同一时刻只能进行一个操作。
使用示例:
...
Http::Client *client = new Http::Client(this);
client->setTimeout(15);
client->setMaximumResponseSize(10 * 1024);
client->done().connect(boost::bind(&MyWidget::handleHttpResponse, this, _1, _2));
if (client->get("http://www.webtoolkit.eu/wt/blog/feed/"))
WApplication::instance()->deferRendering();
} else {
// 在这里处理%URL中的错误
}
}
void handleHttpResponse(boost::system::error_code err, const Http::Message& response)
{
WApplication::instance()->resumeRendering();
if (!err && response.status() == 200) {
... 解析 response.body()
}
}
连接至done()信号的函数会在创建了该客户端对象的程序的上下文中运行。WServer::post()会被用来处理这个事情。
如果妳想向URL中加入认证信息的话,可以这样 https://username:password@www.example.com/。当妳做这件事时,要确保用户名和密码字符串都是经过了URL转义编码的(Wt::Utils::urlEncode)。例如,https://username:pass word@www.example.com /在作为参数传递时应当是https://username:pass%20word@www.example.com/。
|
Signal<boost::system::error_code, Message>& Wt::Http::Client::done |
( |
) |
在当前请求完成时会被发射的那个信号。
如果这个HTTP 请求成功完成的话,错误码error 会是0。在那种情况下,消息体message中就包含着请求结果。
如果错误码error不为0,则,会通过err.message()给出错误消息。
处理请求结果的典型代码是:
void handle(boost::system::error_code err, const Http::Message& response)
{
if (!err) {
if (response.status() == 200) {
... 成功
}
} else {
Wt::log("error") << "Http::Client error: " << err.message();
}
}
|
bool Wt::Http::Client::get |
( |
const std::string & |
url) |
开始一个GET请求。
这个函数会开始一个异步的GET请求,并且会立即返回。
如果这个GET请求被计划好(scheduled)的话,这个函数会返回真( true ),于是 done()信号最终会被发射。
如果这个客户端对象无法将该请求计划好的话,这个函数会返回假(false),例如该url无效,或者该URL模式不被支持。
参考
|
void Wt::Http::Client::setMaximumResponseSize |
( |
std::size_t |
bytes) |
设置最大的回复消息尺寸。
回复内容会在内存中储存。为了避免受到恶意的下游HTTP服务器的拒绝服务攻击(DoS),在这里限制了回复消息的尺寸上限。
这个限制会将状态码、消息头和回复消息体计算在内。
默认值是64KiB。
|
void Wt::Http::Client::setTimeout |
( |
int |
seconds) |
设置输入/输出的超时时间。
这个函数会设置对于输入/输出操作的超时时间。这个超时时间不是指的整体累积超时时间,因为每当发生输入/输出进度变化时都会重置计时器。
默认的超时时间是10秒。
杨丽萍
HxLauncher: Launch Android applications by voice commands